Eksamitöö Marveli filmide andmetega

Alustuseks loen sisse kõik paketid ja andmed, mida kasutama hakkan.

library(tidyverse)
library(dplyr)
library(stringr)
library(lubridate)
library(shiny)
library(ggpubr)
library(plotly)
filmi_andmed <- read_csv("marvel.csv")

Kuna tabelis on eraldi avamisnädalavahetuse ja ülemaailmsed tulud, siis lisasin tulba, kus need on kokku arvestatud, et kõik rahad kokku tulp ka olemas

filmi_andmed = filmi_andmed%>%mutate(All_over = Worldwide + `Opening weekend(North America)`,`Release date(United States)` = as.Date(filmi_andmed$`Release date(United States)`, "%d.%m.%Y") )

Stuudiote kokkuvõte

Vaatasin alustuseks mitu Marveli filmi antud stuudiod välja lasid ja kes kõige rohkem ja kes kõige vähem. Selleks tegin eraldi tabeli, mis näitab mitu korda igat stuudiot on tabelis esinenud. Kasutasin as.list käsku selleks, et vastust oleks lihtsam lugeda ning, et see oleks natuke kompaktsem.

stuudiod = filmi_andmed %>% count(`Distributor(s)`)
as.list(stuudiod[which.max(stuudiod$n),1])
## $`Distributor(s)`
## [1] "Walt Disney Studios Motion Pictures"
as.list(stuudiod[which.min(stuudiod$n),1])
## $`Distributor(s)`
## [1] "20th Century Studios"

Tegin ka sektordiagrammi kõigi stuudiotega, et näidata, palju iga üks neist filme välja lasi ning palju see kõigist Marveli filmidest moodustab

plot_ly(stuudiod, labels =stuudiod$`Distributor(s)` , values =stuudiod$n, type = 'pie',
        textposition = 'none',
        hoverinfo = 'text',
        text = stuudiod$`Distributor(s)`)

Teen ka kolme, kõige rohkem filme välja lasknud, stuudio kohta kerged kokkuvõtted. Selleks teen kolm tabelit, iga stuudio kohta ühe.

fox_20th = filmi_andmed%>%filter(`Distributor(s)`=="20th Century Fox")%>%mutate(Profit=All_over-Budget)%>%
  mutate(`Release date(United States)`=as.numeric(year(`Release date(United States)`)))

walt_disney = filmi_andmed%>%filter(`Distributor(s)`=="Walt Disney Studios Motion Pictures")%>%mutate(Profit=All_over-Budget)%>% mutate(`Release date(United States)`=as.numeric(year(`Release date(United States)`)))

sony = filmi_andmed%>%filter(`Distributor(s)`=="Sony Pictures")%>%mutate(Profit=All_over-Budget)%>% mutate(`Release date(United States)`=as.numeric(year(`Release date(United States)`)))

Teen igale ühele graafikud eelarve, kogu tulu ja kasumi kohta aastate lõikes

20th Century Fow eelarve, kogu tulu ja kasum aastate peale

Walt Disney Studios Motion Picturesi eelarve, kogu tulu ja kasum aastate peal

Sony Pictures´i eelarve, kogu tulu ja kasum aastate peale

Filmide eelarved

Tegin eraldi tabeli, kus on ainult filmi pealkiri, stuudio ja palju oli filmi eelarve. Samuti jagasin eelarve miljoniga läbi, sest kõik eelarved olid ilusad ümmargused arvud, kuid siiski kuvamiseks natuke ebaeeldivalt suured. Järjestasin tehtud tabeli ning võtsin tabeli pea ja saba:)

eelarve = filmi_andmed%>%select(Title, Budget, `Distributor(s)`)%>%mutate(Budget = Budget/1000000)%>%
  rename(Budget_millions=Budget)
p1 <- head(eelarve %>% arrange(Budget_millions)) %>% ggplot(aes(x=Title, y= Budget_millions, fill = Title))+ geom_col()+
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())
p2 <-tail(eelarve %>% arrange(Budget_millions)) %>% ggplot(aes(x=Title, y= Budget_millions, fill = Title))+ geom_col()+
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

Vähimad ja suurimad eelarvetega filmid (millionites dollarites)

Filmide tulud

Siin vaatan eraldi kõiki juhte ehk kui palju filmid teenisid avanädalavahetusega Põhja-Ameerikas, üldiselt Põhja-Ameerika kinodes, muudes piirkondades, üle maailma kokku ning ka minu lisatud veeru kõik kokku, mis siis oli avanädalavahetuse rahad+ülemaailma rahad

Avanädalavahetus Põhja-Ameerika

Millistel filmidel oli suurim tulu avanädalavahetusel Põhja-Ameerikas? Selleks tegin eraldi tabeli, kus on filmi pealkiri ja avanädalavahetusel teenitud summa Põhja-Ameerikas ning seejärel järjestasin selle tabeli, et jällegi võtta tabeli otsad ning jagasin ka siin miljoniga, sest jällegi on arvud liiga suured, et neid täissuuruses kuvada

opening_wknd = filmi_andmed %>% select(Title, `Opening weekend(North America)`)%>%mutate(`Opening weekend(North America)`=`Opening weekend(North America)`/1000000)%>%rename(open_wknd = `Opening weekend(North America)` )
p3 <-head(opening_wknd %>% arrange(open_wknd)) %>% ggplot(aes(x=Title, y= open_wknd, fill = Title))+ geom_col()+
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())
p4 <-tail(opening_wknd %>% arrange(open_wknd)) %>% ggplot(aes(x=Title, y= open_wknd, fill = Title))+ geom_col()+
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

Vähim ja suurim tulu avanädalavahetusel (millionites dollarites)

Üldiselt Põhja-Ameerika

Jutt jääb samaks põhimõtteliselt.

north_America = filmi_andmed %>% select(Title, `North America`)%>%mutate(`North America`=`North America`/1000000)
p5 <-head(north_America %>% arrange(`North America`)) %>% ggplot(aes(x=Title, y= `North America`, fill = Title))+ geom_col()+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())
p6 <-tail(north_America %>% arrange(`North America`)) %>% ggplot(aes(x=Title, y= `North America`, fill = Title))+ geom_col()+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

Vähim ja suurim tulu Põhja-Ameerika (millionites dollarites)

Muude territooriumite tulu

muu_ala = filmi_andmed %>% select(Title, `Other territories`)%>%mutate(`Other territories`=`Other territories`/1000000)
p7 <-head(muu_ala %>% arrange(`Other territories`)) %>% ggplot(aes(x=Title, y= `Other territories`, fill = Title))+ geom_col()+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())
p8 <-tail(muu_ala %>% arrange(`Other territories`)) %>% ggplot(aes(x=Title, y= `Other territories`, fill = Title))+ geom_col()

Vähim ja suurim tulu muudel aladel (millionites dollarites)

Ülemaailmne tulu

üle_maailma = filmi_andmed %>% select(Title, Worldwide)%>% mutate(Worldwide=Worldwide/1000000)
p9 <-head(üle_maailma %>% arrange(Worldwide)) %>% ggplot(aes(x=Title, y= Worldwide, fill = Title))+ geom_col()+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())
p10 <-tail(üle_maailma %>% arrange(Worldwide)) %>% ggplot(aes(x=Title, y= Worldwide, fill = Title))+ geom_col()+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

Väikseim ja suurim tulu ülemaailma (millionites dollarites)

Kõik tulud kokku ehk ülemaailmne+avanädal

kogu = filmi_andmed %>% select(Title, All_over)%>%mutate(All_over=All_over/1000000)
p11 <-head(kogu %>% arrange(All_over)) %>% ggplot(aes(x=Title, y= All_over, fill = Title))+ geom_col()+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())
p12 <-tail(kogu %>% arrange(All_over)) %>% ggplot(aes(x=Title, y= All_over, fill = Title))+ geom_col()+theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())

Väikseim ja suurim kogu tulu

Kasum

Vaataks järgmisena filmide kasumeid. Selleks, et mitte teha ainult tupldiagramme tegin seda punktidega. Koostasin uue tabeli, mis on esialgne tabel koos uue veeruga, mis näitab üldist kasumit

film1 =filmi_andmed%>%mutate(Profit= (All_over-Budget)/1000000, Budget=Budget/1000000)

Joonisel x-telg on eelarve ja y-telg on kasum. Mõlemal juhul jagasin miljoniga läbi, et oleks silmale lihtsam. Seega jällegi on mõlema telje arvud millionites dollarites.

Näeme, et kõik filmid on suhteliselt tihedalt v.a üks. Uuriks filmide eelarve ja kasumi vahelist seost, kas nad sõltuvad üksteisest.

cor(film1$Budget, film1$Profit)
## [1] -0.09130612

Korrelatsioon on negatiivne, aga joonise järgi ütleks, et kui seda ühte väärtust ei oleks, siis oleks korrelatsioon suure tõenäosusega positiivne. Seega uurime välja, mis on see ääres paiknev film.

film1$Title[which.min(film1$Profit)]
## [1] "Captain America: The Winter Soldier"

Eemaldame selle meie tabelist ja teeme korrelatsiooni testi uuesti

film2 = film1%>%slice(-(which.min(Profit)))
cor.test(film2$Budget, film2$Profit)
## 
##  Pearson's product-moment correlation
## 
## data:  film2$Budget and film2$Profit
## t = 7.7942, df = 60, p-value = 1.1e-10
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.5584670 0.8147283
## sample estimates:
##       cor 
## 0.7092972

Korreltasiooni testist selgub, et korrelatsioon on 0.7. Tõenäosus, et eelarve ja eelarve vahel ei ole seost on 1.1e-10 ehk 0,00000000011, seega väga väike ning 95% tõenäosusega võib nende andmete põhjal öelda, et eelarve ja kasumi vaheline korrelatsioon jääb vahemikku 0.56 - 0.81.

Kuupäevade järgi ka midagi

Alustuseks loon uue tabeli, mis on originaal tabel, mille ma järjestasin kuupäevade järgi ning lisasin ka kasumi veeru.

kuupv_tab = filmi_andmed[order(as.Date(filmi_andmed$`Release date(United States)`, format="%d.%m.%Y")),]%>%
  mutate(`Release date(United States)`= as.Date(`Release date(United States)`, "%d.%m.%Y"))%>%
  mutate(Profit= All_over-Budget)

Siis teen tabeli, mis on eelmine tabel, mis on grupeeritud aastate järgi ning milles olen eelarved, kogu teenistus ja ka kasum igale aastale kokku arvestanud.

aasta_tab = kuupv_tab%>%group_by(year=format(`Release date(United States)`, "%Y"))%>%
  summarise(budget = sum(Budget)/1000000, kogu_tulu = sum(All_over)/1000000)%>%mutate(year = as.numeric(year), profit = (kogu_tulu-budget)/1000000)

Nüüd teeks mõned graafikud , millel näeme iga aasta kohta eelarvet, kogu tulu ja kasumit

p13 <-aasta_tab%>%ggplot(aes(x = year, y = budget))+geom_point()+geom_line()+geom_text(aes(label = year), size =3, vjust = -0.5)
p14 <-aasta_tab%>%ggplot(aes(x = year, y = kogu_tulu))+geom_point()+geom_line()+geom_text(aes(label = year), size =3, vjust = -0.5)
p15 <-aasta_tab%>%ggplot(aes(x = year, y = profit))+geom_point()+geom_line()+geom_text(aes(label = year), size =3, vjust = -0.5)

Shiny

Tegin ka ühe shiny animatsiooni, millest saab vaadata, mis filmid mis aastatel olid ning mis olid nende filmide kasumid. Kahjuks ei ole igal aastal filmi, seega on mingite nihuti väärtuste korral graafik tühi.

Shiny applications not supported in static R Markdown documents

Niisama mingit jama

Oma huvi pärast uurisin välja paketi ja käsu millega saab osalise vastega elemendid kogumikest välja otsida ning selle kasutamises/demonstreerimiseks otsisin välja kõik filmide seeriad ja lõpuks ka kõik need filmid mida on üks eksemplar

Iron_Man = filmi_andmed%>% filter(str_detect(Title, "Iron"))
Avengers = filmi_andmed%>% filter(str_detect(Title, "Avengers"))
Captain_America = filmi_andmed%>% filter(str_detect(Title, "America"))
Venom = filmi_andmed%>% filter(str_detect(Title, "Venom"))
X_Men = filmi_andmed%>% filter(str_detect(Title, "X-Men"))
Spider_Man = filmi_andmed%>% filter(str_detect(Title, "Spider-Man"))
Deadpool = filmi_andmed%>% filter(str_detect(Title, "Deadpool"))
Thor = filmi_andmed%>% filter(str_detect(Title, "Thor"))
Guardians = filmi_andmed%>% filter(str_detect(Title, "Guardians"))
Hulk = filmi_andmed%>% filter(str_detect(Title, "Hulk"))
Fantastic4 = filmi_andmed%>% filter(str_detect(Title, "Fantastic Four"))
Blade = filmi_andmed%>% filter(str_detect(Title, "Blade"))
Ghost_Rider = filmi_andmed%>% filter(str_detect(Title, "Ghost"))
Ant_Man = filmi_andmed%>% filter(str_detect(Title, "Ant-Man"))
Punisher = filmi_andmed%>% filter(str_detect(Title, "Punisher"))

Näiteks Iron Man filme on

print(Iron_Man)
## # A tibble: 3 × 9
##   Title      Distrib…¹ Release …² Budget Openi…³ North…⁴ Other…⁵ World…⁶ All_o…⁷
##   <chr>      <chr>     <date>      <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Iron Man   Paramoun… 2008-05-02  1.4e8  9.86e7  3.18e8  2.67e8  5.85e8  6.84e8
## 2 Iron Man 2 Paramoun… 2010-05-07  2  e8  1.28e8  3.12e8  3.12e8  6.24e8  7.52e8
## 3 Iron Man 3 Walt Dis… 2013-05-03  2  e8  1.74e8  4.09e8  8.06e8  1.21e9  1.39e9
## # … with abbreviated variable names ¹​`Distributor(s)`,
## #   ²​`Release date(United States)`, ³​`Opening weekend(North America)`,
## #   ⁴​`North America`, ⁵​`Other territories`, ⁶​Worldwide, ⁷​All_over

Või Spider-Man filme

print(Spider_Man)
## # A tibble: 9 × 9
##   Title        Distr…¹ Release …² Budget Openi…³ North…⁴ Other…⁵ World…⁶ All_o…⁷
##   <chr>        <chr>   <date>      <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1 Spider-Man   Sony P… 2002-05-03 1.39e8  1.15e8  4.04e8  4.18e8  8.22e8  9.37e8
## 2 Spider-Man 2 Sony P… 2004-06-30 2   e8  8.82e7  3.74e8  4.15e8  7.89e8  8.77e8
## 3 Spider-Man 3 Sony P… 2007-05-04 2.58e8  1.51e8  3.37e8  5.54e8  8.91e8  1.04e9
## 4 The Amazing… Sony P… 2012-06-03 2.3 e8  6.20e7  2.62e8  4.96e8  7.58e8  8.20e8
## 5 The Amazing… Sony P… 2014-05-02 2.55e8  9.16e7  2.03e8  5.06e8  7.09e8  8.01e8
## 6 Spider-Man:… Sony P… 2017-07-07 1.75e8  1.17e8  3.34e8  5.46e8  8.80e8  9.97e8
## 7 Spider-Man:… Sony P… 2018-12-14 9   e7  3.54e7  1.90e8  1.85e8  3.76e8  4.11e8
## 8 Spider-Man:… Sony P… 2019-06-02 1.6 e8  9.26e7  3.91e8  7.41e8  1.13e9  1.22e9
## 9 Spider-Man:… Sony P… 2021-12-17 2   e8  2.60e8  7.80e8  1.07e9  1.85e9  2.11e9
## # … with abbreviated variable names ¹​`Distributor(s)`,
## #   ²​`Release date(United States)`, ³​`Opening weekend(North America)`,
## #   ⁴​`North America`, ⁵​`Other territories`, ⁶​Worldwide, ⁷​All_over

Ning nende üksikute filmide leidmiseks ma paremat moodust ise ei leidnud, kindlasti on mõni parem variant ka.

f1 = filmi_andmed[!grepl("Iron", filmi_andmed$Title),]
f2 = f1[!grepl("Avengers", f1$Title),]
f3 = f2[!grepl("America", f2$Title),]                        
f4 = f3[!grepl("Venom", f3$Title),]
f5 = f4[!grepl("X-Men", f4$Title),]
f6 = f5[!grepl("Spider-Man", f5$Title),]
f7 = f6[!grepl("Deadpool", f6$Title),]
f8 = f7[!grepl("Thor", f7$Title),]
f9 = f8[!grepl("Guardians", f8$Title),]
f10 = f9[!grepl("Hulk", f9$Title),]
f11 = f10[!grepl("Fantastic Four", f10$Title),]
f12 = f11[!grepl("Blade", f11$Title),]
f13 = f12[!grepl("Ghost", f12$Title),]
f14 = f13[!grepl("Ant-Man", f13$Title),]
üksikud_filmid = f14[!grepl("Punisher", f14$Title),]

See on see üksikute filmide kogum

print(üksikud_filmid)
## # A tibble: 15 × 9
##    Title       Distr…¹ Release …² Budget Openi…³ North…⁴ Other…⁵ World…⁶ All_o…⁷
##    <chr>       <chr>   <date>      <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1 Howard the… Univer… 1986-08-01 3.7 e7  5.07e6  1.63e7  2.17e7  3.80e7  4.30e7
##  2 Daredevil   20th C… 2003-02-14 7.8 e7  4.03e7  1.03e8  7.66e7  1.79e8  2.19e8
##  3 X2          20th C… 2003-05-02 1.1 e8  8.56e7  2.15e8  1.93e8  4.08e8  4.93e8
##  4 Elektra     20th C… 2005-01-14 4.3 e7  1.28e7  2.44e7  3.23e7  5.67e7  6.95e7
##  5 The Wolver… 20th C… 2013-07-26 1.2 e8  5.31e7  1.33e8  2.82e8  4.15e8  4.68e8
##  6 Big Hero 6  Walt D… 2014-11-07 1.65e8  5.62e7  2.23e8  4.35e8  6.58e8  7.14e8
##  7 Doctor Str… Walt D… 2016-11-04 1.65e8  8.51e7  2.33e8  4.45e8  6.78e8  7.63e8
##  8 Logan       20th C… 2017-03-03 9.7 e7  8.84e7  2.26e8  3.91e8  6.17e8  7.05e8
##  9 Black Pant… Walt D… 2018-02-16 2   e8  2.02e8  7.00e8  6.47e8  1.35e9  1.55e9
## 10 Captain Ma… Walt D… 2019-03-08 1.52e8  1.53e8  4.27e8  7.01e8  1.13e9  1.28e9
## 11 Dark Phoen… 20th C… 2019-06-07 2   e8  3.28e7  6.58e7  1.87e8  2.52e8  2.85e8
## 12 The New Mu… 20th C… 2020-08-28 6.7 e7  7.04e6  2.39e7  2.48e7  4.87e7  5.57e7
## 13 Black Widow Walt D… 2021-07-09 2   e8  8.04e7  1.84e8  1.96e8  3.80e8  4.60e8
## 14 Shang-Chi … Walt D… 2021-09-03 1.5 e8  7.54e7  2.25e8  2.08e8  4.32e8  5.08e8
## 15 Eternals    Walt D… 2021-11-05 2   e8  8.50e7  1.65e8  2.37e8  4.02e8  4.87e8
## # … with abbreviated variable names ¹​`Distributor(s)`,
## #   ²​`Release date(United States)`, ³​`Opening weekend(North America)`,
## #   ⁴​`North America`, ⁵​`Other territories`, ⁶​Worldwide, ⁷​All_over